export const authClick = {
    // 绑定到元素时触发，只调用一次
    created(el, binding) {
      const clickHandler = customClick(el, binding);
      el.addEventListener('click', clickHandler);
      el._customClickHandler = clickHandler; // 保存引用，以便卸载时使用
    },
  
    // 在绑定元素的父组件被挂载时调用
    mounted(el, binding) {
      // 如果有需要在挂载时执行的逻辑，可以添加在这里
      // 设置元素等级
      const { getUserInfoData, getRolesData } = useUserStoreHook()
      const userInfo = getUserInfoData()
      const rolesData = getRolesData()
      const value = el.getAttribute('data-value');
  
      // 检查用户是否有权限访问
      const resources = userInfo.resources;
      const menuResources = userInfo.menuResources;
      const isUserAuthorized = menuResources && menuResources.split(',').indexOf(value) !== -1;
       
      if (isUserAuthorized) {
        // 找到对应的权限等级
        const results = findValues(rolesData, value);
        if (results && results.length > 0) {
          el.setAttribute('data-level', results[0].lv);
        }
      }
  
      let divValue = el.getAttribute('data-value');
      if (!divValue) {
        const elements = el.querySelectorAll('[data-value]');
        // 遍历这些元素并获取其 data-value 属性值
        elements.forEach(el => {
          const val = el.getAttribute('data-value');
          if (val) {
            divValue = val
          }
        });
      }
      // 创建一个覆盖层
      if (divValue) {
        const isHaveResources = resources && resources.split(',').indexOf(divValue) !== -1;
        if (!isHaveResources) {
          var elements = el.querySelectorAll('input');
          elements.forEach(function(element) {
            if (element.tagName.toLowerCase() === 'input') {
              var overlay = document.createElement('div');
              overlay.className = 'overlay';
              // 插入覆盖层到文档中
              el.appendChild(overlay);
            }
          })
        }
      }
    },
  
    // 在包含组件的 VNode 更新后调用
    updated(el, binding) {
      // 如果binding.value更新，需要重新绑定
      if (binding.oldValue !== binding.value) {
        el.removeEventListener('click', el._customClickHandler);
        const newHandler = customClick(el, binding);
        el.addEventListener('click', newHandler);
        el._customClickHandler = newHandler;
      }
    },
  
    // 在绑定元素的父组件被卸载时调用
    unmounted(el) {
      el.removeEventListener('click', el._customClickHandler);
    },
  }